Processing math: 100%


[LOJ6079]-养猫(线性规划转费用流)

先做了 ,一样的套路——线性规划转费用流。

先钦定所有时间吃东西,然后选一些时刻变成睡觉。xi=0/1 表示 i 时刻是否睡觉,是的话代价为 siei

可以列出不等式组:

x1++xkmsx1++xkkmexnk+1++xnkme

变成标准型(就是不等号变等号):

x1++xk=ms+y1x1++xk=kmez1xnk+1++xn=kmeznk+1

线性规划转费用流要求每个变量恰好出现一次为正、一次为负,于是添加一个等式 0=0 并两两做差:

x1++xk=ms+y1y1+z1=kmsmexk+1+(kmsme)=x1+z1+y2kme=xnk+1++xn+znk+1

这一类线性规划转费用流的建模方法,是把等式看作点,等式平衡对应网络流中的流量平衡。

那么每个变量看作流,为正则是入,为负则是出。从出的等式向入的等式连 (cap,val) 的边。例如本题中 xi 连边为 (1,siei),而 yi, zi 等辅助变量连边为 (,0)

对于常数(设为 c)也要处理,为正则视为源点发出给你的,为负则视为你发出给汇点的:(|c|,0)

正确性怎么理解呢qwq?最大流跑完了,每个点的等式都被满足

回到本题,由于第一个等式的常数 ms 在等式右边,我们把右边看作入,跑最大费用流就完事了。

Code